home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / CONTRSRC.ZIP / SRC / GOPI / VIDEO2.INC < prev   
Encoding:
Text File  |  1994-11-05  |  4.0 KB  |  141 lines

  1. ;*****************************************************************************
  2. OUT_16 MACRO Register, Value
  3.     push            ax
  4.     push            dx 
  5. ; Macro to OUT a 16 bit value to an I/O port
  6. IFDIFI <Register>, <DX>               ; If DX not setup
  7.     MOV             DX, Register  ; then Select Register
  8. ENDIF
  9. IFDIFI <Value>, <AX>                  ; If AX not setup
  10.     MOV             AX, Value     ; then Get Data Value
  11. ENDIF
  12.     OUT             DX, AX        ; Set I/O Register(s)
  13.     pop             dx
  14.     pop             ax
  15. ENDM
  16. ;*****************************************************************************
  17. SETPIX  macro
  18.         push    es
  19.  
  20.         mov     ax,DGROUP    ; set segment for DGROUP
  21.         mov     fs,ax
  22.  
  23.         mov     di,fs: _WorkAdr    ;current_pag
  24.         mov     di, word ptr fs:[di]
  25.  
  26.         mov     ax, y
  27.         shl     ax, 4                   ; * 80
  28.         mov     bx, ax
  29.         shl     ax, 2
  30.         add     ax, bx
  31.  
  32.         mov     bx, x
  33.         mov     cx, bx
  34.         shr     bx, 2
  35.         add     bx, ax                  ; offset = width*ypos + xpos/4
  36.         mov     ax, MAP_MASK_PLANE1
  37.         and     cl, PLANE_BITS
  38.         shl     ah, cl
  39.         OUT_16  SC_Index, ax            ; sélection plan
  40.         mov     al, byte ptr couleur
  41.         mov     es:[di+bx], al          ; inscrit le pixel
  42.         pop     es
  43. endm
  44. ;*****************************************************************************
  45. SW_PAGES MACRO
  46. LOCAL m1
  47.         cmp     byte ptr SW, 0
  48.         jnz     @F
  49.         SET_ACTIVE_PAGE 0
  50.         SET_VISUAL_PAGE 1
  51.         mov     byte ptr SW, 1
  52.         jmp     m1
  53. @@:     SET_ACTIVE_PAGE 1
  54.         SET_VISUAL_PAGE 0
  55.         mov     byte ptr SW, 0
  56. m1:
  57. ENDM
  58. ;*****************************************************************************
  59. CPU_TIME MACRO lum
  60. LOCAL suite
  61.         cmp     cpu_flag, 1
  62.         jnz     suite
  63.         push    dx
  64.         push    ax
  65.         mov     dx, 3C8h
  66.         xor     al, al
  67.         out     dx, al
  68.         inc     dl
  69.         mov     al, lum
  70.         out     dx, al
  71.         out     dx, al
  72.         out     dx, al
  73.         pop     ax
  74.         pop     dx
  75. suite:
  76. ENDM
  77. ;*****************************************************************************
  78. SET_ACTIVE_PAGE MACRO num
  79.         mov     ax, PAGE_ADDR[num*2]
  80.         mov     current_page, ax
  81. ENDM
  82. ;*****************************************************************************
  83. SET_VISUAL_PAGE MACRO num
  84. LOCAL WAIT0, WAITV
  85.         mov     dx, INPUT_1             ; voir si on est dans un retrace
  86. WAIT0:
  87.         in      al, dx
  88.         and     al, VERT_RETRACE
  89.         jnz     WAIT0
  90.  
  91. ; set start display address to the new page
  92.  
  93.         mov     dx, CRTC_Index          ; on modifie le séquenceur vga
  94.         mov     cx, PAGE_ADDR[num*2]
  95.  
  96.         mov     al, START_DISP_LO       ; display start low reg
  97.         mov     ah, cl                  ; low 8 bits of start addr
  98.         out     dx, ax                  ; set display addr low
  99.  
  100.         mov     al, START_DISP_HI       ; display start high reg
  101.         mov     ah, ch                  ; high 8 bits of start addr
  102.         out     dx, ax                  ; set display addr high
  103.  
  104. ; wait vrt
  105.         mov     dx, INPUT_1
  106. waitv:
  107.         in      al, dx
  108.         and     al, VERT_RETRACE
  109.         jz      waitv
  110.  
  111. ENDM
  112. ;*****************************************************************************
  113. CLEAR_VGA_SCREEN MACRO
  114.         push    eax
  115.         push    fs
  116.         push    es
  117.         push    di
  118.         push    cx
  119.  
  120.         mov     ax,DGROUP    ; set segment for DGROUP
  121.         mov     fs,ax
  122.  
  123.  
  124.         mov     ax, 0A000h
  125.         mov     es, ax
  126.         OUT_16  SC_Index, All_Planes_On
  127.         mov     di,fs:_WorkAdr ;current_page
  128.         mov     di, word ptr fs:[di]
  129.         xor     eax, eax
  130.         cld
  131.         mov     cx, PAGE_SIZE/4
  132.         rep     stosd
  133.  
  134.         pop     cx
  135.         pop     di
  136.         pop     es
  137.         pop     fs
  138.         pop     eax
  139. ENDM
  140. ;*****************************************************************************
  141.